package gui.gui;

import java.awt.event.ActionListener;
import java.util.Date;
import java.util.List;

import Fiad.FIAD;
import Fiad.Konstanten;

import valueobjects.Ausbilder.Ausbilder;
import valueobjects.Azubi.Azubi;
import valueobjects.Azubi.AzubiImpl;
import valueobjects.Betrieb.Betrieb;
import valueobjects.Klasse.Klasse;
import gui.GuiCommands;
import gui.gui_gen.Azubiaenderung_gen;

public class Azubiaenderung extends Azubiaenderung_gen implements Konstanten {

	private Azubi azubi = null;
	private FIAD fiad = null;

	/**
	 * 
	 * @param a
	 * @param fiad
	 * Füllt die Comboboxen und Textfelder
	 */
	
	public Azubiaenderung(Azubi a, FIAD fiad) {

		this.azubi = a;
		this.fiad = fiad;
		super.txfAzubiID.setText(String.valueOf(a.getId()));
		super.txfEmail.setText(a.getEmail());
		super.txfHausnummer.setText(String.valueOf(a.getHausnummer()));
		super.txfName.setText(a.getName());
		super.txfOrt.setText(a.getOrt());
		super.txfPLZ.setText(String.valueOf(a.getPlz()));
		super.txfStrasse.setText(a.getStrasse());
		super.txfTelefon.setText(a.getTelefon());
		super.txfVorname.setText(a.getVorname());
		super.txfVorwahl.setText(a.getVorwahl());
		if (a.getAustrittsdatum() == null) {
			calAustritt.getCalendar().set(2222, 11, 11);
		} else {

			calAustritt.getCalendar().setTime(a.getAustrittsdatum());
		}

		if (a.getEintrittsdatum() == null) {
			calEintritt.getCalendar().set(2222, 11, 11);
		} else {

			calEintritt.getCalendar().setTime(a.getEintrittsdatum());
		}
		if (a.getGeburtsdatum() == null) {
			calGeburtsdatum.getCalendar().set(2222, 11, 11);
		} else {

			calGeburtsdatum.getCalendar().setTime(a.getGeburtsdatum());
		}
		super.txfGeburtsland.setText(a.getGeburtsland());
		super.txfGeburtsort.setText(a.getGeburtsort());
		super.txfSchulname.setText(a.getSchulname());
		super.txfSchulort.setText(a.getGeburtsort());
		super.txfSchulplz.setText(a.getSchulplz());
		super.txfSchulstraße.setText(a.getSchulStrasse());
		super.txfStaatsangehoerigkeit.setText(a.getStaatsangehoerigkeit());
		cbAusbilder.removeAllItems();
		cbBeruf.removeAllItems();
		cbKlasse.removeAllItems();
		cbBetrieb.removeAllItems();
		cbSchulabschluss.removeAllItems();
		cbSchulform.removeAllItems();
		cbGeschlecht.removeAllItems();
		List<Ausbilder> ausbilderList = fiad.getAlleAusbilder();
		for (Ausbilder ausbilder : ausbilderList) {
			cbAusbilder.addItem(ausbilder);
			cbAusbilder.setSelectedIndex(0);
		}

		List<Betrieb> betriebList = fiad.getAlleBetriebe();
		for (Betrieb betrieb : betriebList) {
			cbBetrieb.addItem(betrieb);
			cbBetrieb.setSelectedIndex(0);
		}

		List<Azubi> azubiList = fiad.getAlleAzubis();

		for (Azubi azubi : azubiList) {
			txfReligion.setText(this.azubi.getReligion());
			cbSchulabschluss.addItem(this.azubi.getSchulabschluss());
			cbSchulabschluss.setSelectedIndex(0);
			cbSchulabschluss.addItem(OHNE);
			cbSchulabschluss.addItem(H8_Sd9);
			cbSchulabschluss.addItem(H9);
			cbSchulabschluss.addItem(H10);
			cbSchulabschluss.addItem(FOR);
			cbSchulabschluss.addItem(FORQ);
			cbSchulabschluss.addItem(FHR);
			cbSchulabschluss.addItem(AHR);
			cbSchulabschluss.addItem(SONSTIGER);
			cbSchulform.addItem(azubi.getSchulForm());
			cbSchulform.setSelectedIndex(0);
			cbSchulform.addItem(H);
			cbSchulform.addItem(GE);
			cbSchulform.addItem(GY);
			cbSchulform.addItem(R);
			cbSchulform.addItem(BG);
			cbSchulform.addItem(SL);
			cbSchulform.addItem(SONSTIGE);
			cbGeschlecht.addItem(azubi.getGeschlecht());
			cbGeschlecht.setSelectedIndex(0);
			cbGeschlecht.addItem(M);
			cbGeschlecht.addItem(W);
			cbBeruf.addItem(azubi.getBeruf());
			cbBeruf.setSelectedIndex(0);
			cbBeruf.addItem(BERUF_SI);
			cbBeruf.addItem(BERUF_AE);
		}

		List<Klasse> klasseList = fiad.getAlleKlassen();
		for (Klasse klasse : klasseList) {
			cbKlasse.addItem(klasse);
		}
		cbKlasse.setSelectedIndex(0);
		init();
	}

	/**
	 * Buttons bekommen ein GuiCommand zugewiesen.
	 */
	
	public void init() {
		super.btnAbbrechen.setActionCommand(GuiCommands.ABBRECHEN.name());
		super.btnOK.setActionCommand(GuiCommands.OK.name());
	}

	public void abbrechenButton() {
		this.setVisible(false);
	}

	/**
	 * Schreibt die Daten aus den Textfeldern und ComboBoxen in ein Azubi-Object
	 */
	public void okButton() {

		this.azubi.setAustrittsdatum(calAustritt.getCalendar().getTime());
		this.azubi.setEintrittsdatum(calEintritt.getCalendar().getTime());
		this.azubi.setGeburtsdatum(calGeburtsdatum.getCalendar().getTime());
		this.azubi.setEmail(txfEmail.getText().trim());
		this.azubi.setGeburtsland(txfGeburtsland.getText().trim());
		this.azubi.setGeburtsort(txfGeburtsort.getText().trim());
		this.azubi.setGeschlecht(cbGeschlecht.getSelectedItem().toString()
				.trim());
		this.azubi.setHausnummer(Integer
				.valueOf(txfHausnummer.getText().trim()));
		this.azubi.setId(Integer.valueOf(txfAzubiID.getText().trim()));
		this.azubi.setName(txfName.getText().trim());
		this.azubi.setOrt(txfOrt.getText().trim());
		this.azubi.setReligion(txfReligion.getText().trim());
		this.azubi.setSchulabschluss(cbSchulabschluss.getSelectedItem()
				.toString().trim());
		this.azubi
				.setSchulForm(cbSchulform.getSelectedItem().toString().trim());
		this.azubi.setSchulname(txfSchulname.getText().trim());
		this.azubi.setSchulOrt(txfSchulort.getText().trim());
		this.azubi.setSchulplz(txfSchulplz.getText().trim());
		this.azubi.setSchulStrasse(txfSchulstraße.getText().trim());
		this.azubi.setStaatsangehoerigkeit(txfStaatsangehoerigkeit.getText()
				.trim());
		this.azubi.setStrasse(txfStrasse.getText().trim());
		this.azubi.setTelefon(txfTelefon.getText().trim());
		this.azubi.setVorname(txfVorname.getText().trim());
		this.azubi.setVorwahl(txfVorwahl.getText().trim());

		this.azubi.setAusbilder((Ausbilder) cbAusbilder.getSelectedItem());

		this.azubi.setBeruf(cbBeruf.getSelectedItem().toString());

		this.azubi.setBetrieb((Betrieb) cbBetrieb.getSelectedItem());

		this.azubi.setKlasse((Klasse) cbKlasse.getSelectedItem());

		this.fiad.aendereAzubi(this.azubi);

	}

	
	public void fuelleFelder(Azubi a) {
		super.txfAzubiID.setText(String.valueOf(a.getId()));
		super.txfEmail.setText(a.getEmail());
		super.txfHausnummer.setText(String.valueOf(a.getHausnummer()));
		super.txfName.setText(a.getName());
		super.txfOrt.setText(a.getOrt());
		super.txfPLZ.setText(String.valueOf(a.getPlz()));
		super.txfStrasse.setText(a.getStrasse());
		super.txfTelefon.setText(a.getTelefon());
		super.txfVorname.setText(a.getVorname());
		super.txfVorwahl.setText(a.getVorwahl());
		init();

	}

	

	
	public void registerActionListenerForAzubiAenderungButtons(
			ActionListener listener) {
		super.btnOK.addActionListener(listener);
		super.btnAbbrechen.addActionListener(listener);

	}

}
